This application generally relates to message-based distributed computing systems and execution of message-based distributed applications on such systems.
Distributed computing systems are typically computer networks where individual computers are in communication with each other, while being physically separated. Each computer may serve as an autonomous computational node, with its own local memory. A single computer running one or more autonomous processes, which interact with each other, where each process may be allocated to run on one or more processor cores, may also be referred to as a distributed computing system. Examples of distributed computing systems include telecommunication networks (e.g., cellular networks), network applications (e.g., peer-to-peer networks), real-time systems (e.g., aircraft control systems), and parallel computation platforms (e.g., grid computing).
Processes in a distributed computing system may communicate with each other via message passing. Traditional message-based systems allow a user to write applications where processes or objects may communicate with other processes via sending and receiving messages. Processes may also wait on messages to synchronize data or execution paths with other processes.
The traditional systems, however, require significant programming effort on the part of the user to write a message-based parallel program. Current parallel programming models hamper user productivity by allowing a user to express parallel constructs at the cost of programming simplicity. Applications that require execution to be real-time, e.g., securities trading systems, require further programming effort on part of the user to offer execution guarantee.